package cn.hy.completable.案例.组合式异步编程;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
 * @author zhaomu
 *
 * thenApply(),
 * 根据我的名字获取我的学生信息 2.根据我的学生信息查询课程 我们可以用下面这种方式来链式调用api，
 */
public class Demo01 {

    private static Map<Integer,String> studentMap = new HashMap<>();
    private static Map<String,String> lessonsMap = new HashMap<>();

    static {
        studentMap.put(1,"zhangsan");
        lessonsMap.put("zhangsan","java");
        lessonsMap.put("lisi","spring");

    }

    public static void main(String[] args) {
        CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> {
            // 根据学生姓名获取学生信息
            return studentMap.get(1);
        }).thenApply(student -> {
            // 再根据学生信息获取今天的课程
            return Arrays.asList(lessonsMap.get(student));
        });

        System.out.println(future.join());
    }

}
